In distributed and multi-processor systems, multiple hardware servers and their resident software are linked, and cooperate in providing the resources required to execute the software processes of the system. In such systems, software processes can act as both clients and software servers while sharing the hardware resources. Typical examples of distributed systems include transaction processing systems and data acquisition systems.
In distributed systems of this type, there is a likelihood that there will be delays in execution as processes contend for the hardware and software resources. The system performance behavior is not readily predictable; changes in requests for service between processes, the number of instances of processes, the internal level of concurrence within processes and the placement of processes on processors are all factors that can have a significant impact on system performance.
Performance modeling is an analysis method for discovering which of a system's many features constrain performance by representing them in a predictive model. The resource demands of each process in the system, such as processor time requirements and requests for services from other processes, are quantified and used to define a model. The performance measures that are predicted are a super set of those for closed queuing network models and include:
1. process throughput and response times; PA1 2. process utilizations, and the average number of processes queued at each serving process; PA1 3. device utilizations, and average queue lengths. PA1 i) selecting parameters defining PA1 ii) executing a simulation of said at least one application process according to the selected parameters; and PA1 iii) providing a performance analysis of the simulation.
A change in model parameters permits the prediction of system performance under modified circumstances. Using such a model, a range of system scenarios can be examined without actually altering the system under study.
"The Method of Layers" (Rolia, J. A. and Sevcik, K. C., IEEE Transactions on Software Engineering. Vol. 21, No. 8, pp. 689-700, Aug. 1995) is one model for obtaining performance estimates for distributed systems. In the method of layers approach, estimates of performance for queuing in a closed network, average number of visits for individual software process types and scheduling disciplines are used as input parameters for models (called layered queuing models or LQM) of the components of a distributed system. The method of layers divides an LQM into two complementary models, one for software and one for devices, and combines the results to provide performance estimates for the system under study.
One model, called the software contention model, describes the relationships in the software process architecture and is used to predict software contention delays.
The second model, called the device contention model, is used to determine queuing delays at hardware devices. By alternating between the software and device contention submodels, differences in non-serving group response time estimates can be narrowed, and at the point that these differences are less than some tolerance, the performance metrics for the LQM have reached a fixed point so that a predictable model is achieved.
While there are computer tools to assist users in designing programs to improve standards, these are mainly of the computer aided software engineering (CASE) type, rather than performance analysis tools utilizing analysis methods such as the methods of layers.
For example, U.S. Pat. No. 5,187,788 of the United States of America as represented by the Secretary of the Air Force, titled Graphics System for Automatic Computer Code Generation, describes an automatic code generation tool for the Ada programming language, a semi-object oriented language, within a unitary processing environment. From an initial program design, three different visual representations of this program are generated; an overview of the program components, a representation of the data structures and local variables, and a representation of the flow control of the program. As the programmer changes aspects of the program in any of these views, consistency is maintained in the other representations.
U.S. Pat. No. 5,295,222 of Seer Technologies, Inc., titled Computer-Aided Software Engineering Facility, describes a case facility for creating distributed applications. While the system described may itself be object oriented, the patent describes the input applications in terms of entities and relationships which is not an object oriented approach to application design. The described facility utilizes a relational database to store information on all application programs created using the facility. The contents of this database can be reused, as needed, in subsequent applications. This facility also provides the user with multiple consistent views of a single application to aid in distributed design. Following application design and code generation, a debugging and testing facility enables users to evaluate the performance of the generated application.
Finally, U.S. Pat. No. 5,394,522 of the present applicant, titled Selecting and Locating Graphical Icon Objects to Define and Configure the Workstations in Data Processing Networks is directed to a tool for configuring communication and database networks having a graphical user interface to visually represent the elements of the network. Files with configuration parameters are associated with each iconic representation, and these files can be deployed or modified by a central network manager. The facility can easily be switched between a communication and a database mode of operation.
While the tools described in these patents may assist in program design and deployment of program modules or objects over distributed networks, none of the foregoing assists the user to design an optimal distributed program based on performance characteristics of a selected network. The programmer may select different distributed configurations for the program in order to test performance at a practical level, but is not provided with any means for an up-front analytical performance comparison of different models prior to code generation.
It is therefore an object of the present invention to provide application developers with a tool that can automatically transform a performance analysis model, such as the method of layers, into a tool for comparing various design alternatives.
Another object of the invention is to provide a performance analysis tool to be used at the earliest stages of application design for the client server environment, to determine an optimal distribution of objects prior to writing or generating the program code.
A further object of the invention is to provide a mechanism for application developers to view and understand performance specifications from different angles.
Other objects of the present invention will become obvious from reviewing the disclosure and claims.
Accordingly, the present invention provides a mechanism for providing performance projections for designs of an application over a distributed system. The mechanism includes means for defining different parameters of the application and the distributed system means for storing the defined parameters as persistent objects means for modifying the stored persistent objects and means for providing analyses of selected groupings of the stored persistent objects that define different performance scenarios.
Preferably, in the means for defining different parameters of the application and the distributed system, a graphical user interface is provided adapted to receive input from a user and schematically display distributed objects and networks from the distributed system, and interaction links between the distributed objects from the application, and preferably the means for storing the defined parameters as persistent objects include means to store as separate objects alternate distributions of the distributed objects and alternate interaction links between the distributed objects.
The invention also provides a method for determining a performance-based distribution of application processes over a distributed system having a plurality of linked processors and including middleware connections between distributed processors. The method includes the steps of:
a) hosts, networks and connections in the distributed system, and PA2 b) interactions between the hosts for executing at least one application process;
A computer program product having computer readable code means embodied in a computer usable media for effecting the above is also provided by the invention.